#ifndef EVM_STACK_H
#define EVM_STACK_H

#include <stdint.h>

typedef struct evm_stack {
    uint32_t *data;
    uint32_t *sp;
    uint32_t  size;
    uint32_t  allocated;
} evm_stack;


evm_stack* evm_stack_new  ( uint32_t size );
void       evm_stack_free ( evm_stack* st );

inline uint32_t evm_stack_push( evm_stack* st, uint32_t  value );
inline uint32_t evm_stack_pop ( evm_stack* st, uint32_t *value );

#endif // EVM_STACK_H
